package edu.cuit.avatar.recursive;

import java.util.Arrays;

/**
 * 递归选择排序
 *  1、找出列表中的最小元素，然后将它和第一个元素进行交换
 *  2、忽略第一个元素，对余下的较小的一些列表进行递归排序
 * 基础条件：列表只包含一个元素
 * @author <a href="mailto:1020zhaodan@163.com">Adan</a>
 * @version 1.0
 * @date 2025/7/14 9:26
 */
public class RecursiveSelectionSort {
    public static void sort(int[] list) {
        sort(list, 0, list.length - 1);
    }
    private static void sort(int[] list, int low, int high){
        if(low < high){
            int min = list[low];
            int minIndex = low;
            for(int i = low + 1; i <= high; i++){
                if(list[i] < min){
                    min = list[i];
                    minIndex = i;
                }
            }
            //将最小元素和第一个元素进行交换
            list[minIndex] = list[low];
            list[low] = min;

            //忽略第一个元素，对余下的较小的一些列表进行递归排序
            sort(list, low + 1, high);
        }
    }

    public static void main(String[] args) {
        int[] list = {0, -1, 10, 6, -20, 30, 20, 15};
        sort(list);
        System.out.println(Arrays.toString(list));
    }
}
